﻿using System;
using System.Data;
using System.Web.UI;
using BLL;
using DAL;
using Ext.Net;
using Roles;

namespace ERP.Modules
{
    public partial class SellMain : UserControl
    {
        #region[Define]
        private static bool _flag;
        private readonly BllSell _clsSell = new BllSell();
        private readonly BllOrder_Sell _clsOrderSell = new BllOrder_Sell();
        private readonly Customer_BLL _clsCustomer = new Customer_BLL();
        #endregion

        #region[Controller]
        protected void Page_Load(object sender, EventArgs e)
        {
            var scriptManager = ScriptManager.GetCurrent(Page);
            if (scriptManager != null) scriptManager.RegisterPostBackControl(btnExport);
            if (!X.IsAjaxRequest)
            {
                CheckPermisstion();
                txtDateBegin.Text = DateTime.Now.ToString();
                GetSell();
                btnEdit.Disable(true);
                btnDel.Disable(true);
                btnExport.Disable(true);
            }
        }
        //Store
        protected void StoreSellMain_RefreshData(object sender, StoreReadDataEventArgs e)
        {
            txtSearch.Text = string.Empty;
            txtDateBeginFillter.Text = string.Empty;
            txtDateEndFillter.Text = string.Empty;
            GetSell();
        }
        protected void StoreOrderSellMain_Materials_RefreshData(object sender, StoreReadDataEventArgs e)
        {
            GetMaterialSell();
        }
        protected void StoreOrderCustomerSellMain_RefreshData(object sender, StoreReadDataEventArgs e)
        {
            GetCustomer();
        }
        protected void StoreOrderSellMain_Detail_RefreshData(object sender, StoreReadDataEventArgs e)
        {
            if (_flag)
            {
                if (String.IsNullOrEmpty(txtOrderSell_ID.Text))
                {
                    GetOrderDetailTemp();
                    GetOrderSellSum();
                }
                else
                {
                    GetOrderDetailGridEdit(int.Parse(txtOrderSell_ID.Text));
                    GetSellOrderSumEdit(int.Parse(txtOrderSell_ID.Text));
                }
            }
            else
            {
                if (String.IsNullOrEmpty(txtOrderSell_ID.Text))
                {
                    GetOrderSellSumEdit(int.Parse(txtOrderSellMain_ID.Text));
                    GetOrderDetailGridEditB(int.Parse(txtOrderSellMain_ID.Text));
                }
                else
                {
                    GetOrderDetailGridEdit(int.Parse(txtOrderSell_ID.Text));
                    GetSellOrderSumEdit(int.Parse(txtOrderSell_ID.Text));
                }
            }
        }
        //Button
        protected void btnAddNew_Click(object sender, DirectEventArgs e)
        {
            _flag = true;
            GetAutoID();
            ClearText();
            txtOrderSellCode.ReadOnly = false;
            btnRefreshSellMainCode.Enable(true);
            btnSavePopUp.Enable(true);
            btnAddMaterial.Enable(true);
            btnDelMaterial.Enable(true);
            btnAddCustomer.Enable(true);
            btnOrderCode.Enable(true);
            btnReloadText.Enable(true);
            SelectType.Enable(true);
            var obj = new EtSellDetail { User_ID = int.Parse(Session["Users_Id"].ToString()) };
            BllSell.DeleteSellOrder(obj);
            GetOrderDetailTemp();
            WindowsOrderSellMain.Show();
        }
        protected void btnEdit_Click(object sender, DirectEventArgs e)
        {
            var sm = grSellMain.GetSelectionModel() as CheckboxSelectionModel;
            if (sm != null)
                foreach (var row in sm.SelectedRows)
                {
                    _flag = false;
                    txtOrderSellCode.ReadOnly = true;
                    btnRefreshSellMainCode.Disable(true);
                    btnOrderCode.Disable(true);
                    btnDelMaterial.Disable(true);
                    if (String.IsNullOrEmpty(txtOrderSell_ID.Text))
                    {
                        GetSellEdit(int.Parse(row.RecordID));
                        GetOrderDetailGridEdit(int.Parse(row.RecordID));
                        GetOrderSellSumEdit(int.Parse(row.RecordID));
                    }
                    else
                    {
                        GetSellEdit(int.Parse(row.RecordID));
                        GetOrderSellSumEdit(int.Parse(row.RecordID));
                        GetOrderDetailGridEditB(int.Parse(row.RecordID));
                        GetSellOrderSumEdit(int.Parse(txtOrderSell_ID.Text));
                    }
                    WindowsOrderSellMain.Show();
                }
        }
        protected void btnDel_Click(object sender, DirectEventArgs e)
        {
            var sm = grSellMain.GetSelectionModel() as CheckboxSelectionModel;
            if (sm != null)
                foreach (var row in sm.SelectedRows)
                {
                    try
                    {
                        var obj = new EtSell { ID_Sell = int.Parse(row.RecordID) };
                        BllSell.DeleteSell(obj);
                        if(obj.Msg == 0)
                            HTML.clsFormat.Alert_ERROR("Lỗi", "Tồn tại chứng từ liên quan,không thể xoá được !");
                        else if (obj.Msg == 2)
                            HTML.clsFormat.Alert_ERROR("Lỗi", "Tồn tại chứng từ liên quan,không thể xoá được !");
                    }
                    catch (Exception)
                    {
                        HTML.clsFormat.Alert_ERROR("Thông Báo", "Tồn tại tài liệu con, không xoá được vui lòng xoá tài liệu con trước !");
                    }
                }
            GetSell();
        }
        protected void btnFillter_Click(object sender, DirectEventArgs e)
        {
            GetOrderFillterDate();
        }
        protected void btnSavePopUp_Click(object sender, DirectEventArgs e)
        {
            if (_flag)
            {
                if (String.IsNullOrEmpty(txtOrderSell_ID.Text))
                {
                    InsertSell();
                }
                else
                {
                    InsertInsertSellWithOrderValue();
                }
            }
            else
            {
                if (CheckPermisstionDobclick())
                {
                    HTML.clsFormat.Alert_ERROR("Lỗi", "Bạn không được cấp phép thay đổi dữ liệu !");
                }
                else if (CheckEdit())
                {
                    HTML.clsFormat.Alert_ERROR("Lỗi", "Có chứng từ liên quan.Không thể thay đổi !");
                }
                else
                {
                    UpdateOrder();
                }
            }
        }
        protected void btnCancelPopUp_Click(object sender, DirectEventArgs e)
        {
            WindowsOrderSellMain.Close();
        }
        protected void btnRefreshSellMainCode_Click(object sender, DirectEventArgs e)
        {
            GetAutoID();
        }
        protected void btnAddCustomer_Click(object sender, DirectEventArgs e)
        {
            var sm = grCustomerSellMain.GetSelectionModel() as CheckboxSelectionModel;
            if (sm != null) sm.DeselectAll();
            GetCustomer();
            WindowCustomerSellMain.Show();
        }
        protected void btnAddMaterial_Click(object sender, DirectEventArgs e)
        {
            var sm = grOrderSellMain_Proposed_Materials.GetSelectionModel() as CheckboxSelectionModel;
            if (sm != null) sm.DeselectAll();
            GetMaterialSell();
            WindowOrderSellMain_Materials.Show();
        }
        protected void btnDelMaterial_Click(object sender, DirectEventArgs e)
        {
            if (_flag)
            {
                var sm = grOrderSellMain_Detail.GetSelectionModel() as CheckboxSelectionModel;
                if (sm != null)
                    foreach (var row in sm.SelectedRows)
                    {
                        try
                        {
                            var obj = new EtSellDetail {ID_Sell_Detail = int.Parse(row.RecordID)};
                            BllSell.DeleteSellDetailMaterial(obj);
                        }
                        catch (Exception)
                        {
                            HTML.clsFormat.Alert_ERROR("Thông Báo",
                                "Tồn tại tài liệu con, không xoá được vui lòng xoá tài liệu con trước !");
                        }
                    }
                GetOrderDetailTemp();
                GetOrderSellSum();
            }
            else
            {
                var sm = grOrderSellMain_Detail.GetSelectionModel() as CheckboxSelectionModel;
                if (sm != null)
                    foreach (var row in sm.SelectedRows)
                    {
                        try
                        {
                            var obj = new EtSellDetail { ID_Sell_Detail = int.Parse(row.RecordID) };
                            BllSell.DeleteSellDetailMaterial(obj);
                        }
                        catch (Exception)
                        {
                            HTML.clsFormat.Alert_ERROR("Thông Báo", "Tồn tại tài liệu con, không xoá được vui lòng xoá tài liệu con trước !");
                        }
                    }
                GetOrderDetailGridEdit(int.Parse(txtOrderSellMain_ID.Text));
                GetOrderSellSumEdit(int.Parse(txtOrderSellMain_ID.Text));
            }
        }
        protected void btnSelectOrderSellMain_Materials_Click(object sender, DirectEventArgs e)
        {
            if (_flag)
            {
                InsertOrderSellDetail();
            }
            else
            {
                InsertOrderSellDetailEdit();
            }
        }
        protected void btnOrderCode_Click(object sender, DirectEventArgs e)
        {
            GetOrderSell();
            WindowOrderSell.Show();
        }
        //Double-Click
        protected void SellMainDblClick(object sender, DirectEventArgs e)
        {
            _flag = false;
            txtOrderSellCode.ReadOnly = true;
            btnRefreshSellMainCode.Disable(true);
            btnOrderCode.Disable(true);
            btnDelMaterial.Disable(true);
            int ID_Sell = int.Parse(e.ExtraParams["ID_Sell"]);
            GetSellEdit(ID_Sell);
            if (String.IsNullOrEmpty(txtOrderSell_ID.Text))
            {
               
                GetOrderSellSumEdit(ID_Sell);
                GetOrderDetailGridEditB(ID_Sell);
            }
            else
            {
                GetOrderDetailGridEdit(int.Parse(txtOrderSell_ID.Text));
                GetSellOrderSumEdit(int.Parse(txtOrderSell_ID.Text));
            }
            WindowsOrderSellMain.Show();
        }
        //Cell-Click
        protected void CellOrderSellMainCustomer_Click(object sender, DirectEventArgs e)
        {
            var sm = grCustomerSellMain.GetSelectionModel() as CellSelectionModel;
            if (sm != null)
            {
                string id = sm.SelectedCell.RecordID;
                GetCustomerEdit(int.Parse(id));
            }
            if (sm != null)
            {
                sm.Clear();
                sm.UpdateSelection();
            }
            WindowCustomerSellMain.Close();
        }
        //Search
        protected void Search_Event(object sender, DirectEventArgs e)
        {
            var dtSearch = _clsSell.GetSell(txtSearch.Text);
            if (dtSearch != null && dtSearch.Rows.Count > 0)
            {
                StoreSellMain.DataSource = dtSearch;
                StoreSellMain.DataBind();
            }
            else
            {
                grSellMain.GetStore().RemoveAll();
            }
        }
        //Select-Box
        protected void SelectType_Change(object sender, DirectEventArgs e)
        {
            /*
            *  0       : Đơn giá bán lẽ
            *  1       : Đơn giá gốc  
            *  True    : Ẩn
            *  False   : Hiện
            */
            if (SelectType.SelectedItem.Value == "0")
            {
                txtTypeSell.Text = SelectType.SelectedItem.Value;
                grOrderSellMain_Detail.ColumnModel.GetColumnByDataIndex("Sell_Detail_Price").Hidden = false;
                grOrderSellMain_Detail.ColumnModel.GetColumnByDataIndex("Price_Initially").Hidden = true;
            }
            else
            {
                txtTypeSell.Text = SelectType.SelectedItem.Value;
                grOrderSellMain_Detail.ColumnModel.GetColumnByDataIndex("Sell_Detail_Price").Hidden = true;
                grOrderSellMain_Detail.ColumnModel.GetColumnByDataIndex("Price_Initially").Hidden = false;
            }
        }
       //Text-Editor-Update
        protected void UpdateMaterials_Click(object sender, DirectEventArgs e)
        {
            var GetSellOrder_Detail = e.ExtraParams["grOrderSellMain_Detail"];
            var dtSellOrder_Detail = JSON.Deserialize<DataTable>(GetSellOrder_Detail);
            if (_flag)
            {
                if (String.IsNullOrEmpty(txtOrderSell_ID.Text))
                {
                    #region[Bán lẽ]
                    if (dtSellOrder_Detail.Rows.Count == 0)
                    {
                        HTML.clsFormat.Alert_ERROR("Thông Báo", "Vui lòng thêm sản phẩm để mua hàng !");
                    }
                    else
                    {
                        foreach (DataRow rows in dtSellOrder_Detail.Rows)
                        {
                            var obj = new EtSellDetail
                            {
                                ID_Sell = -1,
                                Materials_Id = int.Parse(rows["Materials_Id"].ToString()),
                                ID_Sell_Detail = int.Parse(rows["ID_Sell_Detail"].ToString()),
                                Sell_Detail_Quanlity = int.Parse(rows["Sell_Detail_Quanlity"].ToString()),
                                Sell_Detail_Price = float.Parse(rows["Sell_Detail_Price"].ToString()),
                                Sell_Detail_CK_Percent = float.Parse(rows["Sell_Detail_CK_Percent"].ToString()),
                                Sell_Detail_VAT_Percent = float.Parse(rows["Sell_Detail_VAT_Percent"].ToString()),
                                Sell_Detail_Quality_Remain = int.Parse(rows["Sell_Detail_Quanlity"].ToString()),
                                User_ID = int.Parse(Session["Users_Id"].ToString()),
                                Flag = 1
                            };
                            BllSell.UpdateQuanlityOrder(obj);
                            if (obj.Msg == 0)
                            {
                                HTML.clsFormat.Alert_ERROR("Lỗi", "Số lượng mua hàng phải nhỏ hơn số lượng trong kho !");
                            }
                            if (obj.Msg == 2)
                            {
                                HTML.clsFormat.Alert_ERROR("Lỗi", "Có chứng từ liên quan,không thể thay đổi đơn hàng !");
                            }
                            if (obj.Msg == 3)
                            {
                                HTML.clsFormat.Alert_ERROR("Lỗi", "Có chứng từ liên quan,không thể thay đổi đơn hàng !");
                            }
                            if (obj.Msg == 4)
                            {
                                HTML.clsFormat.Alert_ERROR("Lỗi", "Có chứng từ liên quan,không thể thay đổi đơn hàng !");
                            }
                            if (obj.Msg == 5)
                            {
                                HTML.clsFormat.Alert_ERROR("Lỗi", "Có chứng từ liên quan,không thể thay đổi đơn hàng !");
                            }
                        }
                        GetOrderDetailTemp();
                        GetOrderSellSum();
                    }
                    #endregion

                    #region[Giá Gốc]
                    //if (dtSellOrder_Detail.Rows.Count == 0)
                    //{
                    //    HTML.clsFormat.Alert_ERROR("Thông Báo", "Vui lòng thêm sản phẩm để mua hàng !");
                    //}
                    //else
                    //{
                    //    foreach (DataRow rows in dtSellOrder_Detail.Rows)
                    //    {
                    //        var obj = new EtSellDetail
                    //        {
                    //            ID_Sell = -1,
                    //            Materials_Id = int.Parse(rows["Materials_Id"].ToString()),
                    //            ID_Sell_Detail = int.Parse(rows["ID_Sell_Detail"].ToString()),
                    //            Sell_Detail_Quanlity = int.Parse(rows["Sell_Detail_Quanlity"].ToString()),
                    //            Sell_Detail_CK_Percent = float.Parse(rows["Sell_Detail_CK_Percent"].ToString()),
                    //            Sell_Detail_VAT_Percent = float.Parse(rows["Sell_Detail_VAT_Percent"].ToString()),
                    //            Sell_Detail_Quality_Remain = int.Parse(rows["Sell_Detail_Quanlity"].ToString()),
                    //            User_ID = int.Parse(Session["Users_Id"].ToString()),
                    //            Flag = 1
                    //        };
                    //        BllSell.UpdateQuanlityOrderRoot(obj);
                    //        if (obj.Msg == 0)
                    //            HTML.clsFormat.Alert_ERROR("Lỗi", "Số lượng mua hàng phải nhỏ hơn số lượng trong kho !");
                    //    }
                    //    GetOrderDetailTemp();
                    //    GetOrderSellSum();
                    //}
                    #endregion
                }
                else
                {
                    HTML.clsFormat.Alert_ERROR("Lỗi", "Không được thay đổi giá trị khi mua hàng theo hoá đơn !");
                }
            }
            else
            {
                if (String.IsNullOrEmpty(txtOrderSell_ID.Text))
                {
                    #region[Bán lẽ]

                    if (dtSellOrder_Detail.Rows.Count == 0)
                    {
                        HTML.clsFormat.Alert_ERROR("Thông Báo", "Vui lòng thêm sản phẩm để mua hàng !");
                    }
                    else
                    {
                        foreach (DataRow rows in dtSellOrder_Detail.Rows)
                        {
                            var obj = new EtSellDetail
                            {
                                Materials_Id = int.Parse(rows["Materials_Id"].ToString()),
                                ID_Sell = int.Parse(txtOrderSellMain_ID.Text),
                                ID_Sell_Detail = int.Parse(rows["ID_Sell_Detail"].ToString()),
                                Sell_Detail_Quanlity = int.Parse(rows["Sell_Detail_Quanlity"].ToString()),
                                Sell_Detail_Price = float.Parse(rows["Sell_Detail_Price"].ToString()),
                                Sell_Detail_CK_Percent = float.Parse(rows["Sell_Detail_CK_Percent"].ToString()),
                                Sell_Detail_VAT_Percent =
                                    float.Parse(rows["Sell_Detail_VAT_Percent"].ToString()),
                                Sell_Detail_Quality_Remain = int.Parse(rows["Sell_Detail_Quanlity"].ToString()),
                                User_ID = int.Parse(Session["Users_Id"].ToString()),
                                Flag = 0
                            };
                            BllSell.UpdateQuanlityOrder(obj);
                            if (obj.Msg == 0)
                                HTML.clsFormat.Alert_ERROR("Lỗi", "Số lượng mua hàng phải nhỏ hơn số lượng trong kho !");
                            else if (obj.Msg == 2)
                                HTML.clsFormat.Alert_ERROR("Lỗi", "Có chứng từ liên quan,không thể thay đổi đơn hàng !");
                            else if (obj.Msg == 3)
                                HTML.clsFormat.Alert_ERROR("Lỗi", "Có chứng từ liên quan,không thể thay đổi đơn hàng !");
                            else
                                HTML.clsFormat.Alert_INFO("Thông Báo", "Cập nhật thành công !");
                        }
                        GetOrderDetailGridEdit(int.Parse(txtOrderSellMain_ID.Text));
                        GetOrderSellSumEdit(int.Parse(txtOrderSellMain_ID.Text));
                    }

                    #endregion

                    #region[Giá Gốc]
                    //if (dtSellOrder_Detail.Rows.Count == 0)
                    //{
                    //    HTML.clsFormat.Alert_ERROR("Thông Báo", "Vui lòng thêm sản phẩm để mua hàng !");
                    //}
                    //else
                    //{
                    //    foreach (DataRow rows in dtSellOrder_Detail.Rows)
                    //    {
                    //        var obj = new EtSellDetail
                    //        {
                    //            Materials_Id = int.Parse(rows["Materials_Id"].ToString()),
                    //            ID_Sell_Detail = int.Parse(rows["ID_Sell_Detail"].ToString()),
                    //            ID_Sell = int.Parse(txtOrderSellMain_ID.Text),
                    //            Sell_Detail_Quanlity = int.Parse(rows["Sell_Detail_Quanlity"].ToString()),
                    //            Sell_Detail_CK_Percent = float.Parse(rows["Sell_Detail_CK_Percent"].ToString()),
                    //            Sell_Detail_VAT_Percent =
                    //                float.Parse(rows["Sell_Detail_VAT_Percent"].ToString()),
                    //            Sell_Detail_Quality_Remain = int.Parse(rows["Sell_Detail_Quanlity"].ToString()),
                    //            User_ID = int.Parse(Session["Users_Id"].ToString()),
                    //            Flag = 0
                    //        };
                    //        BllSell.UpdateQuanlityOrderRoot(obj);
                    //        if (obj.Msg == 0)
                    //            HTML.clsFormat.Alert_ERROR("Lỗi", "Số lượng mua hàng phải nhỏ hơn số lượng trong kho !");
                    //        else if (obj.Msg == 2)
                    //            HTML.clsFormat.Alert_ERROR("Lỗi", "Có chứng từ liên quan,không thể thay đổi đơn hàng !");
                    //        else if (obj.Msg == 3)
                    //            HTML.clsFormat.Alert_ERROR("Lỗi", "Có chứng từ liên quan,không thể thay đổi đơn hàng !");
                    //        else
                    //            HTML.clsFormat.Alert_INFO("Thông Báo", "Cập nhật thành công !");
                    //    }
                    //    GetOrderDetailGridEdit(int.Parse(txtOrderSellMain_ID.Text));
                    //    GetOrderSellSumEdit(int.Parse(txtOrderSellMain_ID.Text));
                    //}
                    #endregion
                }
                else
                {
                    HTML.clsFormat.Alert_ERROR("Lỗi", "Không được thay đổi giá trị khi mua hàng theo hoá đơn !");
                }
            }
        }
        #endregion

        #region[Method]
        private void GetSell()
        {
            var _dtGetOrderSell = _clsSell.GetSell(txtSearch.Text);
            if (_dtGetOrderSell != null && _dtGetOrderSell.Rows.Count > 0)
            {
                StoreSellMain.DataSource = _dtGetOrderSell;
                StoreSellMain.DataBind();
            }
            else
            {
                grSellMain.GetStore().RemoveAll();
            }
        }
        private void GetOrderDetailTemp()
        {
            var _dtGetOrderDetailTemp = _clsSell.GetOrderSellDetailTemp(int.Parse(Session["Users_Id"].ToString()));
            if (_dtGetOrderDetailTemp != null && _dtGetOrderDetailTemp.Rows.Count > 0)
            {
                StoreOrderSellMain_Detail.DataSource = _dtGetOrderDetailTemp;
                StoreOrderSellMain_Detail.DataBind();
            }
            else
            {
                grOrderSellMain_Detail.GetStore().RemoveAll();
            }
        }
        private void GetSellEdit(int id)
        {
            var _dtGetOrderSellEdit = _clsSell.GetSellEdit(id);
            if (_dtGetOrderSellEdit != null && _dtGetOrderSellEdit.Rows.Count > 0)
            {
                txtOrderSellMain_ID.Text = _dtGetOrderSellEdit.Rows[0]["ID_Sell"].ToString();
                txtOrderSell_ID.Text = _dtGetOrderSellEdit.Rows[0]["Order_Sell_Id"].ToString();
                txtOrderSellCode.Text = _dtGetOrderSellEdit.Rows[0]["Order_Sell_Code"].ToString();
                txtCustomerID.Text = _dtGetOrderSellEdit.Rows[0]["Customer_Id"].ToString();
                txtOrderSellMainCode.Text = _dtGetOrderSellEdit.Rows[0]["Sell_Code"].ToString();
                txtDateBegin.Text = _dtGetOrderSellEdit.Rows[0]["Sell_DateBegin"].ToString();
                txtTaxCode.Text = _dtGetOrderSellEdit.Rows[0]["Sell_Tax_Code"].ToString();
                txtCustomerID.Text = _dtGetOrderSellEdit.Rows[0]["Customer_ID"].ToString();
                txtCustomerAlias.Text = _dtGetOrderSellEdit.Rows[0]["Customer_Alias"].ToString();
                txtCustomerAddress.Text = _dtGetOrderSellEdit.Rows[0]["Customer_Address"].ToString();
                txtCustomerName.Text = _dtGetOrderSellEdit.Rows[0]["Customer_Name"].ToString();
                txtNote.Text = _dtGetOrderSellEdit.Rows[0]["Note"].ToString();
                txtTypeSell.Text = _dtGetOrderSellEdit.Rows[0]["TypeSell"].ToString();
                SelectType.SetValue(_dtGetOrderSellEdit.Rows[0]["TypeSell"].ToString());
                txtTaxCode.Text = _dtGetOrderSellEdit.Rows[0]["Customer_Contract_Tax_Code"].ToString();
                if (String.IsNullOrEmpty(_dtGetOrderSellEdit.Rows[0]["Order_Sell_Id"].ToString()))
                {
                    btnReloadText.Enable(true);
                    btnAddMaterial.Enable(true);
                    btnDelMaterial.Enable(true);
                    btnAddCustomer.Enable(true);
                    btnReloadText.Disable(true);
                    SelectType.Disable(true);
                }
                else
                {
                    btnReloadText.Disable(true);
                    btnAddMaterial.Disable(true);
                    btnDelMaterial.Disable(true);
                    btnAddCustomer.Disable(true);
                    btnReloadText.Disable(true);
                    SelectType.Disable(true);
                }
            }
        }
        //Get Order Sell Detail
        private void GetOrderDetailGridEdit(int id)
        {
            var _dtGetOrderDetailGridEdit = _clsSell.GetOrderSellDetailEditA(id);
            if (_dtGetOrderDetailGridEdit != null && _dtGetOrderDetailGridEdit.Rows.Count > 0)
            {
                StoreOrderSellMain_Detail.DataSource = _dtGetOrderDetailGridEdit;
                StoreOrderSellMain_Detail.DataBind();
            }
            else
            {
                grOrderSellMain_Detail.GetStore().RemoveAll();
            }
        }
        //Get Sell Detail
        private void GetOrderDetailGridEditB(int id)
        {
            var _dtGetOrderDetailGridEdit = _clsSell.GetOrderSellDetailEditB(id);
            if (_dtGetOrderDetailGridEdit != null && _dtGetOrderDetailGridEdit.Rows.Count > 0)
            {
                StoreOrderSellMain_Detail.DataSource = _dtGetOrderDetailGridEdit;
                StoreOrderSellMain_Detail.DataBind();
            }
            else
            {
                grOrderSellMain_Detail.GetStore().RemoveAll();
            }
        }
        private void GetMaterialSell()
        {
            var _dtGetOrderMaterialSell = _clsOrderSell.GetOrderMaterial(string.Empty);
            if (_dtGetOrderMaterialSell != null && _dtGetOrderMaterialSell.Rows.Count > 0)
            {
                StoreOrderSellMain_Proposed_Materials.DataSource = _dtGetOrderMaterialSell;
                StoreOrderSellMain_Proposed_Materials.DataBind();
            }
            else
            {
                grOrderSellMain_Proposed_Materials.GetStore().RemoveAll();
            }
        }
        private void GetCustomer()
        {
            var _dtCustomer = _clsCustomer.BindGirdtb_Customer(string.Empty);
            if (_dtCustomer != null && _dtCustomer.Rows.Count > 0)
            {
                StoreCustomerSellMain.DataSource = _dtCustomer;
                StoreCustomerSellMain.DataBind();
            }
            else
            {
                grCustomerSellMain.GetStore().RemoveAll();
            }
        }
        private void GetCustomerEdit(int id)
        {
            var _dtCustomerEdit = _clsCustomer.GetCustomerDetail(id);
            if (_dtCustomerEdit != null && _dtCustomerEdit.Rows.Count > 0)
            {
                txtCustomerID.Text = _dtCustomerEdit.Rows[0]["Customer_ID"].ToString();
                txtCustomerAlias.Text = _dtCustomerEdit.Rows[0]["Customer_Alias"].ToString();
                txtCustomerName.Text = _dtCustomerEdit.Rows[0]["Customer_Name"].ToString();
                txtCustomerAddress.Text = _dtCustomerEdit.Rows[0]["Customer_Address"].ToString();
                txtTaxCode.Text = _dtCustomerEdit.Rows[0]["Customer_Contract_Tax_Code"].ToString();
            }
        }
        private void GetOrderSellSum()
        {
            var _dtGetSum = _clsSell.GetOrderSellDetailSum(int.Parse(Session["Users_Id"].ToString()), 1);
            if (_dtGetSum != null && _dtGetSum.Rows.Count > 0)
            {
                lbQualityOrderSellMain.Text = _dtGetSum.Rows[0]["TotalMaterials"].ToString();
                lbPriceOrderSellMain.Text = String.Format("{0:0,00}", _dtGetSum.Rows[0]["TotalPrice"]).Replace(".", ",");
                lbPriCKOrderSellMain.Text = String.Format("{0:0,00}", _dtGetSum.Rows[0]["TotalCK"]).Replace(".", ",");
                lbPriVATOrderSellMain.Text = String.Format("{0:0,00}", _dtGetSum.Rows[0]["TotalVAT"]).Replace(".", ",");
                lbTotalCostOrderSellMain.Text = String.Format("{0:0,00}", _dtGetSum.Rows[0]["TotalPriceALL"]).Replace(".", ",");
            }
        }
        private void GetOrderSellSumEdit(int id)
        {
            var _dtGetSum = _clsSell.GetOrderSellDetailSumEdit(id, 0);
            if (_dtGetSum != null && _dtGetSum.Rows.Count > 0)
            {
                lbQualityOrderSellMain.Text = _dtGetSum.Rows[0]["TotalMaterials"].ToString();
                lbPriceOrderSellMain.Text = String.Format("{0:0,00}", _dtGetSum.Rows[0]["TotalPrice"]).Replace(".", ",");
                lbPriCKOrderSellMain.Text = String.Format("{0:0,00}", _dtGetSum.Rows[0]["TotalCK"]).Replace(".", ",");
                lbPriVATOrderSellMain.Text = String.Format("{0:0,00}", _dtGetSum.Rows[0]["TotalVAT"]).Replace(".", ",");
                lbTotalCostOrderSellMain.Text = String.Format("{0:0,00}", _dtGetSum.Rows[0]["TotalPriceALL"]).Replace(".", ",");
            }
        }
        private void GetAutoID()
        {
            var _dtGetAutoID = _clsOrderSell.GetAutoID("Sell_Code", "tb_Sell");
            if (_dtGetAutoID != null && _dtGetAutoID.Rows.Count > 0)
            {
                try
                {
                    txtOrderSellMainCode.Text = "DHM-" + DateTime.Now.ToString("yyMM") + "-000" +
                                            Convert.ToString(int.Parse(_dtGetAutoID.Rows[0]["Auto_ID"].ToString()) +
                                                             int.Parse(1.ToString()));
                }
                catch (Exception ex)
                {
                    HTML.clsFormat.Alert_ERROR("Thông Báo", ex.Message);
                }
            }
        }
        private void GetOrderFillterDate()
        {
            if (String.IsNullOrEmpty(txtDateBeginFillter.Text) && String.IsNullOrEmpty(txtDateEndFillter.Text))
            {
                var _dtGetOrderSell = _clsSell.GetSell(txtSearch.Text);
                if (_dtGetOrderSell != null && _dtGetOrderSell.Rows.Count > 0)
                {
                    StoreSellMain.DataSource = _dtGetOrderSell;
                    StoreSellMain.DataBind();
                }
                else
                {
                    grSellMain.GetStore().RemoveAll();
                }
            }
            else
            {
                var _dtGetOrderSell = _clsSell.GetOrderSellFillterDate(txtDateBeginFillter.Text, txtDateEndFillter.Text);
                if (_dtGetOrderSell != null && _dtGetOrderSell.Rows.Count > 0)
                {
                    StoreSellMain.DataSource = _dtGetOrderSell;
                    StoreSellMain.DataBind();
                }
                else
                {
                    grSellMain.GetStore().RemoveAll();
                }
            }
        }
        private bool CheckEdit()
        {
            var _clsExport = new Proposed_Export_BLL();
            bool kiemtra = false;
            var dtExport = _clsExport.BindGirdtb_Proposed_Export(string.Empty);
            if (dtExport != null && dtExport.Rows.Count > 0)
            {
                foreach (DataRow dr in dtExport.Rows)
                {
                    if (txtOrderSellMain_ID.Text == dr["Order_Sell"].ToString())
                    {
                        kiemtra = true;
                    }
                }
            }
            return kiemtra;
        }
        private bool CheckInsertOrder()
        {
            bool kiemtra = false;
            var dtOrder = _clsSell.GetSell(string.Empty);
            if (dtOrder != null && dtOrder.Rows.Count > 0)
            {
                foreach (DataRow dr in dtOrder.Rows)
                {
                    if (txtOrderSellCode.Text == dr["Sell_Code"].ToString())
                    {
                        kiemtra = true;
                    }
                }
            }
            return kiemtra;
        }
        private bool CheckInsertMaterials(int id)
        {
            bool kiemtra = false;
            var dtMaterials = _clsSell.GetOrderSellDetailTemp(int.Parse(Session["Users_Id"].ToString()));
            if (dtMaterials != null && dtMaterials.Rows.Count > 0)
            {
                foreach (DataRow dr in dtMaterials.Rows)
                {
                    if (id == int.Parse(dr["Materials_Id"].ToString()))
                    {
                        kiemtra = true;
                    }
                }
            }
            return kiemtra;
        }
        private bool CheckInsertMaterialsEdit(int id, int ID_Sell)
        {
            bool kiemtra = false;
            var dtMaterials = _clsSell.GetOrderSellDetailEditExist(int.Parse(Session["Users_Id"].ToString()), ID_Sell);
            if (dtMaterials != null && dtMaterials.Rows.Count > 0)
            {
                foreach (DataRow dr in dtMaterials.Rows)
                {
                    if (id == int.Parse(dr["Materials_Id"].ToString()))
                    {
                        kiemtra = true;
                    }
                }
            }
            return kiemtra;
        }
        private void InsertSell()
        {
            try
            {
                if (CheckInsertOrder())
                {
                    HTML.clsFormat.Alert_ERROR("Lỗi", "Mã hoá đơn đã tồn tại !");
                }
                else
                {
                    var dtExists = _clsSell.GetOrderSellDetailExists();
                    if (dtExists != null && dtExists.Rows.Count > 0)
                    {
                        var obj = new EtSell
                        {

                            Order_Sell_Id =
                                String.IsNullOrEmpty(txtOrderSell_ID.Text)
                                    ? (int?) null
                                    : int.Parse(txtOrderSell_ID.Text),
                            Customer_Id = int.Parse(txtCustomerID.Text),
                            Sell_Code = txtOrderSellMainCode.Text,
                            Sell_DateBegin = DateTime.Parse(txtDateBegin.Text),
                            Sell_Tax_Code = txtTaxCode.Text,
                            Sell_User_Id = int.Parse(Session["Users_Id"].ToString()),
                            IsActive = false,
                            IsUsed = false,
                            Note = txtNote.Text,
                            TypeSell = "0",
                        };
                        BllSell.InsertSell(obj);
                        HTML.clsFormat.Alert_INFO("Thông Báo", "Thêm mới thành công !");
                        GetSell();
                        ClearText();
                        GetAutoID();
                    }
                    else
                    {
                        HTML.clsFormat.Alert_ERROR("Lỗi", "Không có vật tư để cập nhật !");
                    }
                }
            }
            catch (Exception ex)
            {
                HTML.clsFormat.Alert_ERROR("Lỗi", ex.Message);
            }
        }
        private void InsertOrderSellDetail()
        {
            try
            {
                var sm = grOrderSellMain_Proposed_Materials.GetSelectionModel() as CheckboxSelectionModel;
                if (sm != null)
                    foreach (var row in sm.SelectedRows)
                    {
                        try
                        {
                            if (CheckInsertMaterials(int.Parse(row.RecordID)))
                            {
                                HTML.clsFormat.Alert_ERROR("Lỗi",
                                    "Vật tư này đã tồn tại trong danh sách bán hàng !");
                            }
                            else
                            {
                                var obj = new EtSellDetail
                                {
                                    ID_Sell = -1,
                                    Materials_Id = int.Parse(row.RecordID),
                                    Sell_Detail_Quanlity = 0,
                                    Sell_Detail_Price = 0,
                                    Sell_Detail_CK_Percent = 0,
                                    Sell_Detail_CK = 0,
                                    Sell_Detail_VAT_Percent = 0,
                                    Sell_Detail_VAT = 0,
                                    Sell_Detail_Total_Price = 0,
                                    Flag = 1,
                                    User_ID = int.Parse(Session["Users_Id"].ToString()),
                                    Sell_Detail_Quality_Remain = 0
                                };
                                BllSell.InsertSellDetail(obj);
                                if (obj.Msg == 0)
                                {
                                    HTML.clsFormat.Alert_ERROR("Thông Báo", "Số lượng vật tư không đủ để cung cấp !");
                                }
                                else
                                {
                                    HTML.clsFormat.Alert_INFO("Thông Báo", "Thêm thành công vật tư !");
                                    WindowOrderSellMain_Materials.Close();
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            HTML.clsFormat.Alert_ERROR("Thông Báo", ex.Message);
                        }
                    }
                GetOrderDetailTemp();
                GetOrderSellSum();
            }
            catch (Exception ex)
            {
                HTML.clsFormat.Alert_ERROR("Lỗi", ex.Message);
            }
        }
        private void InsertOrderSellDetailEdit()
        {
            try
            {
                var sm = grOrderSellMain_Proposed_Materials.GetSelectionModel() as CheckboxSelectionModel;
                if (sm != null)
                    foreach (var row in sm.SelectedRows)
                    {
                        try
                        {
                            if (CheckInsertMaterialsEdit(int.Parse(row.RecordID),int.Parse(txtOrderSellMain_ID.Text)))
                            {
                                HTML.clsFormat.Alert_ERROR("Lỗi",
                                    "Vật tư này đã tồn tại trong danh sách bán hàng !");
                            }
                            else
                            {
                                var obj = new EtSellDetail
                                {
                                    ID_Sell = int.Parse(txtOrderSellMain_ID.Text),
                                    Materials_Id = int.Parse(row.RecordID),
                                    Sell_Detail_Quanlity = 0,
                                    Sell_Detail_Price = 0,
                                    Sell_Detail_CK_Percent = 0,
                                    Sell_Detail_CK = 0,
                                    Sell_Detail_VAT_Percent = 0,
                                    Sell_Detail_VAT = 0,
                                    Sell_Detail_Total_Price = 0,
                                    Flag = 0,
                                    User_ID = int.Parse(Session["Users_Id"].ToString()),
                                    Sell_Detail_Quality_Remain = 0
                                };
                                BllSell.InsertSellDetail(obj);
                                if (obj.Msg == 0)
                                {
                                    HTML.clsFormat.Alert_ERROR("Thông Báo", "Số lượng vật tư không đủ để cung cấp !");
                                }
                                else
                                {
                                    HTML.clsFormat.Alert_INFO("Thông Báo", "Thêm thành công vật tư !");
                                    WindowOrderSellMain_Materials.Close();
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            HTML.clsFormat.Alert_ERROR("Thông Báo", ex.Message);
                        }
                    }
                GetOrderDetailGridEdit(int.Parse(txtOrderSellMain_ID.Text));
                GetOrderSellSumEdit(int.Parse(txtOrderSellMain_ID.Text));
            }
            catch (Exception ex)
            {
                HTML.clsFormat.Alert_ERROR("Lỗi", ex.Message);
            }
        }
        private void UpdateOrder()
        {
            try
            {
                var obj = new EtSell
                {
                    ID_Sell = int.Parse(txtOrderSellMain_ID.Text),
                    Sell_Tax_Code = txtTaxCode.Text,
                    Sell_User_Id = int.Parse(Session["Users_Id"].ToString()),
                    Note = txtNote.Text
                };
                BllSell.UpdateOrderSell(obj);
                HTML.clsFormat.Alert_INFO("Thông Báo", "Cập nhật thành công đơn đặt hàng !");
                GetSell();
                WindowsOrderSellMain.Close();
            }
            catch (Exception ex)
            {
                HTML.clsFormat.Alert_ERROR("Lỗi", ex.Message);
            }
        }
        #endregion

        #region[Clear-Text]
        private void ClearText()
        {
            lbQualityOrderSellMain.Text = "0";
            lbPriceOrderSellMain.Text = "0";
            lbPriCKOrderSellMain.Text = "0";
            lbPriVATOrderSellMain.Text = "0";
            lbTotalCostOrderSellMain.Text = "0";
            txtOrderSellMain_ID.Text = string.Empty;
            txtDateBegin.Text = DateTime.Now.ToString();
            txtTaxCode.Text = string.Empty;
            txtCustomerAddress.Text = string.Empty;
            txtCustomerAlias.Text = string.Empty;
            txtCustomerName.Text = string.Empty;
            txtNote.Text = string.Empty;
            SelectType.Text = string.Empty;
            txtOrderSell_ID.Text = string.Empty;
            txtCustomerID.Text = string.Empty;
            txtOrderSellCode.Text = string.Empty;
            txtTypeSell.Text = string.Empty;
            grOrderSellMain_Detail.GetStore().RemoveAll();
        }
        #endregion

        #region[OrderSell]
        protected void StoreOrderSell_RefreshData(object sender, StoreReadDataEventArgs e)
        {
            GetOrderSell();
        }
        protected void CellOrderSell_Click(object sender, DirectEventArgs e)
        {
            var sm = grOrderSell.GetSelectionModel() as CellSelectionModel;
            if (sm != null)
            {
                string id = sm.SelectedCell.RecordID;
                GetOrderSellEdit(int.Parse(id));
                GetOrderSellGridEdit(int.Parse(id));
                GetSellOrderSumEdit(int.Parse(id));
            }
            if (sm != null)
            {
                sm.Clear();
                sm.UpdateSelection();
            }
            WindowOrderSell.Close();
        }
        protected void btnReloadText_Click(object sender, DirectEventArgs e)
        {
            btnAddMaterial.Enable(true);
            btnDelMaterial.Enable(true);
            btnAddCustomer.Enable(true);
            SelectType.Enable(true);
            txtOrderSell_ID.Text = string.Empty;
            txtCustomerID.Text = string.Empty;
            txtOrderSellCode.Text = string.Empty;
            txtTaxCode.Text = string.Empty;
            txtCustomerID.Text = string.Empty;
            txtCustomerAlias.Text = string.Empty;
            txtCustomerAddress.Text = string.Empty;
            txtCustomerName.Text = string.Empty;
            txtTypeSell.Text = string.Empty;
            grOrderSellMain_Detail.GetStore().RemoveAll();
        }
        #endregion

        #region[Method-Order-Sell]
        private void GetOrderSell()
        {
            var _dtOrderSell = _clsSell.GetOrderSell(string.Empty);
            if (_dtOrderSell != null && _dtOrderSell.Rows.Count > 0)
            {
                StoreOrderSell.DataSource = _dtOrderSell;
                StoreOrderSell.DataBind();
            }
            else
            {
                grOrderSell.GetStore().RemoveAll();
            }
        }
        private void GetOrderSellEdit(int id)
        {
            var _dtGetOrderDetail = _clsSell.GetOrderSellEdit(id);
            if (_dtGetOrderDetail != null && _dtGetOrderDetail.Rows.Count > 0)
            {
                txtOrderSell_ID.Text = _dtGetOrderDetail.Rows[0]["Order_Sell_Id"].ToString();
                txtCustomerID.Text = _dtGetOrderDetail.Rows[0]["Customer_Id"].ToString();
                txtOrderSellCode.Text = _dtGetOrderDetail.Rows[0]["Order_Sell_Code"].ToString();
                txtCustomerID.Text = _dtGetOrderDetail.Rows[0]["Customer_ID"].ToString();
                txtCustomerAlias.Text = _dtGetOrderDetail.Rows[0]["Customer_Alias"].ToString();
                txtCustomerAddress.Text = _dtGetOrderDetail.Rows[0]["Customer_Address"].ToString();
                txtCustomerName.Text = _dtGetOrderDetail.Rows[0]["Customer_Name"].ToString();
                txtTypeSell.Text = _dtGetOrderDetail.Rows[0]["TypeSell"].ToString();
                btnAddMaterial.Disable(true);
                btnDelMaterial.Disable(true);
                btnAddCustomer.Disable(true);
                SelectType.Disable(true);
            }
        }
        private void GetOrderSellGridEdit(int id)
        {
            var _dtGetOrderSellGrid = _clsSell.GetOrderSellGridEdit(id);
            if (_dtGetOrderSellGrid != null && _dtGetOrderSellGrid.Rows.Count > 0)
            {
                StoreOrderSellMain_Detail.DataSource = _dtGetOrderSellGrid;
                StoreOrderSellMain_Detail.DataBind();
                    
            }
            else
            {
                grOrderSellMain_Detail.GetStore().RemoveAll();
            }
        }
        private void GetSellOrderSumEdit(int id)
        {
            var _dtGetSum = _clsOrderSell.GetOrderSellDetailSumEdit(id, 0);
            if (_dtGetSum != null && _dtGetSum.Rows.Count > 0)
            {
                lbQualityOrderSellMain.Text = _dtGetSum.Rows[0]["TotalMaterials"].ToString();
                lbPriceOrderSellMain.Text = String.Format("{0:0,00}", _dtGetSum.Rows[0]["TotalPrice"]).Replace(".", ",");
                lbPriCKOrderSellMain.Text = String.Format("{0:0,00}", _dtGetSum.Rows[0]["TotalCK"]).Replace(".", ",");
                lbPriVATOrderSellMain.Text = String.Format("{0:0,00}", _dtGetSum.Rows[0]["TotalVAT"]).Replace(".", ",");
                lbTotalCostOrderSellMain.Text = String.Format("{0:0,00}", _dtGetSum.Rows[0]["TotalPriceALL"]).Replace(".", ",");
            }
        }
        private void InsertInsertSellWithOrderValue()
        {
            try
            {
                var obj = new EtSell
                {
                    Order_Sell_Id = int.Parse(txtOrderSell_ID.Text),
                    Customer_Id = int.Parse(txtCustomerID.Text),
                    Sell_Code = txtOrderSellMainCode.Text,
                    Sell_DateBegin = DateTime.Parse(txtDateBegin.Text),
                    Sell_Tax_Code = txtTaxCode.Text,
                    Sell_User_Id = int.Parse(Session["Users_Id"].ToString()),
                    IsActive = false,
                    IsUsed = false,
                    Note = txtNote.Text,
                    TypeSell = txtTypeSell.Text
                };
                InsertSellDetailWithOrderValue(int.Parse(txtOrderSell_ID.Text));
                BllSell.InsertSellWithOrder(obj);
                HTML.clsFormat.Alert_INFO("Thông Báo", "Thêm mới thành công !");
                GetSell();
                GetSellOrderSumEdit(int.Parse(txtOrderSell_ID.Text));
                ClearText();
                btnAddMaterial.Enable(true);
                btnDelMaterial.Enable(true);
                btnAddCustomer.Enable(true);
                SelectType.Enable(true);
            }
            catch (Exception ex)
            {
                HTML.clsFormat.Alert_ERROR("Lỗi", ex.Message);
            }
        }
        private void InsertSellDetailWithOrderValue(int OrderSell_ID)
        {
            try
            {
                var obj = new EtSellDetail
                {
                    ID_Sell = -1,
                    Order_Sell_Id = OrderSell_ID,
                    User_ID = int.Parse(Session["Users_Id"].ToString())
                };
                BllSell.InsertSellDetailWithOrder(obj);
            }
            catch (Exception ex)
            {
                HTML.clsFormat.Alert_ERROR("Lỗi", ex.Message);
            }
        }
        #endregion

        #region[Print]
        protected void MenuItemExportExcel_Click(object sender, DirectEventArgs e)
        {
            var _clsGetServerUpload = new BLLsaddicServerUpload();
            var _dtGetServerUpload = _clsGetServerUpload.GetServerUpload();
            var GetSellOrder_Detail = e.ExtraParams["grSellMain"];
            var dtSellOrder_Detail = JSON.Deserialize<DataTable>(GetSellOrder_Detail);
            var sm = grSellMain.GetSelectionModel() as CheckboxSelectionModel;
            if (sm != null)
                if (sm.SelectedRows.Count > 1)
                {
                    HTML.clsFormat.Alert_ERROR("Lỗi", "Bạn chỉ được phép chọn một dòng để in dữ liệu !");
                }
                else
                {
                    foreach (var row in sm.SelectedRows)
                    {
                        foreach (DataRow rows in dtSellOrder_Detail.Rows)
                        {
                            if (rows["Order_Sell_Id"].ToString() == "0" || rows["Order_Sell_Id"] == DBNull.Value ||
                                rows["Order_Sell_Id"].ToString() == string.Empty)
                            {
                                var _clsGetReport = new BllReportSell();
                                var _dtGetReport = _clsGetReport.GetReportSell(int.Parse(row.RecordID));
                                if (_dtGetReport != null && _dtGetReport.Rows.Count > 0)
                                {
                                    if (_dtGetServerUpload != null && _dtGetServerUpload.Rows.Count > 0)
                                    {
                                        LibGlobal.Export.ExcelExport(_dtGetReport,
                                            Server.MapPath(_dtGetServerUpload.Rows[1]["Path_Download"].ToString()),
                                            Server.MapPath(_dtGetServerUpload.Rows[1]["Path_Upload"].ToString()));
                                        LibGlobal.Export.DownloadFile(
                                            _dtGetServerUpload.Rows[1]["Path_Download"].ToString(),
                                            _dtGetServerUpload.Rows[1]["Page_Name"].ToString(),
                                            _dtGetServerUpload.Rows[1]["Extend"].ToString());
                                    }
                                }
                            }
                            else
                            {
                                var _clsGetReport = new BllReportSell();
                                var _dtGetReport = _clsGetReport.GetReportSellOrder(int.Parse(rows["Order_Sell_Id"].ToString()));
                                if (_dtGetReport != null && _dtGetReport.Rows.Count > 0)
                                {
                                    if (_dtGetServerUpload != null && _dtGetServerUpload.Rows.Count > 0)
                                    {
                                        LibGlobal.Export.ExcelExport(_dtGetReport,
                                            Server.MapPath(_dtGetServerUpload.Rows[0]["Path_Download"].ToString()),
                                            Server.MapPath(_dtGetServerUpload.Rows[0]["Path_Upload"].ToString()));
                                        LibGlobal.Export.DownloadFile(
                                            _dtGetServerUpload.Rows[0]["Path_Download"].ToString(),
                                            _dtGetServerUpload.Rows[0]["Page_Name"].ToString(),
                                            _dtGetServerUpload.Rows[0]["Extend"].ToString());
                                    }
                                }
                            }
                        }
                        HTML.clsFormat.Alert_INFO("Thông Báo", "In thành công !");
                    }   
                }
        }
        #endregion

        #region[Permisstion]
        private void CheckPermisstion()
        {
            if (Session["login"] != null && Session["USer_Detail_Id"].ToString() != string.Empty)
            {
                bool Is_BtnAdd;
                bool Is_BtnEdit;
                bool Is_BtnView;
                bool Is_BtnDel;
                bool Is_BtnPrint;
                bool Is_BtnCancel;
                bool Is_BtnReview;

                SecurityServices.HasPermisstion_Btn(StringContent.SellMain, out Is_BtnAdd, out Is_BtnEdit, out Is_BtnDel, out Is_BtnView, out Is_BtnCancel, out Is_BtnPrint, out Is_BtnReview);
                if (Is_BtnAdd == false)
                {
                    btnAddNew.Visible = false;
                }
                if (Is_BtnEdit == false)
                {
                    btnEdit.Visible = false;
                }
                if (Is_BtnView == false)
                {
                    PanelSellMain.Visible = false;
                }
                if (Is_BtnDel == false)
                {
                    btnDel.Visible = false;
                }
                if (Is_BtnPrint == false)
                {
                    btnExport.Visible = false;
                }
            }
        }
        private bool CheckPermisstionDobclick()
        {
            bool check = false;
            if (Session["login"] != null && Session["USer_Detail_Id"].ToString() != string.Empty)
            {
                bool Is_BtnAdd;
                bool Is_BtnEdit;
                bool Is_BtnView;
                bool Is_BtnDel;
                bool Is_BtnPrint;
                bool Is_BtnCancel;
                bool Is_BtnReview;

                SecurityServices.HasPermisstion_Btn(StringContent.SellMain, out Is_BtnAdd, out Is_BtnEdit, out Is_BtnDel, out Is_BtnView, out Is_BtnCancel, out Is_BtnPrint, out Is_BtnReview);
                if (Is_BtnEdit == false)
                {
                    check = true;
                }
            }
            return check;
        }
        #endregion
    }
}